#ifndef GRAPH_H
#define GRAPH_H

#include <vector>

class AbstractNode
{

};

template <class T>
class Node : public AbstractNode
{
    public :

    Node<T>();

    T obj;

    std::vector<Node<T> > childs;

    Node<T> * parent;

    T * GetFirstChild();
    T * GetChild(i);

};

class Graph
{
    public :

    Graph();

    AbstractNode * rootNode;

};

#endif // GRAPH_H
